﻿using Helper;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WinCourseControls
{
    public partial class FrmProgressBar : Form
    {
        public FrmProgressBar()
        {
            InitializeComponent();
        }
        /// <summary>
        /// 要加载的数据
        /// </summary>
        DataTable dt;
        /// <summary>
        /// 当前进度值
        /// </summary>
        int i = 0;
        /// <summary>
        /// 最大进度值
        /// </summary>
        int max = 0;

        /// <summary>
        /// 页面加载
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FrmProgressBar_Load(object sender, EventArgs e)
        {

            string sql = "select ClassId,ClassName from ClassInfos";
            dt = SqlHelper.GetDataTable(sql, 1);

        }

        /// <summary>
        /// Timer事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timer1_Tick(object sender, EventArgs e)
        {
             if(pbar.Value<pbar.Maximum) // 判断进度值要小于最大值，否则会报错
            {
                i = pbar.Value; // 获取当前进度值
                string className = dt.Rows[i]["ClassName"].ToString(); // 模拟执行一次操作-读取一次数据
                // pbar.PerformStep();// 执行Step 数值增量 与下面的+=是同一个效果
                pbar.Value += pbar.Step; // 执行Step 数值增量 与上面PerformStep()方法是同一个效果
                // 使用decimal转是为了获取小数
                lblValue.Text = ((decimal)(((decimal)pbar.Value / (decimal)max) * 100)).ToString("0.0")+"%"; // 计算当前进度百分比
            }
             else
            {
                lblValue.Text = "加载完成！"; // 提示加载完成
                timer1.Stop(); // 停止timer事件
            }
        }

        /// <summary>
        /// 加载按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnLoad_Click(object sender, EventArgs e)
        {
           // pbar.Maximum = Convert.ToInt32(txtLength.Text);
           if(dt.Rows.Count>0) // 判断是否有数据
            {
                max = dt.Rows.Count;
                pbar.Maximum = dt.Rows.Count; // 设置最大进度
                pbar.Minimum = 0; // 设置最小进度
                pbar.Value = 0; // 设置初始进度
                pbar.Step = 1; // 设置每次递增量
                pbar.Style = ProgressBarStyle.Blocks; // 设置进度样式
                timer1.Start(); // 启动timer事件
            }
          
        }

        /// <summary>
        /// 停止按钮-停止执行加载进度
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnPause_Click(object sender, EventArgs e)
        {
            timer1.Stop(); // 停止timer事件
        }

        /// <summary>
        /// 继续按钮-继续执行加载进度
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnContinue_Click(object sender, EventArgs e)
        {
            timer1.Start(); // 执行timer事件
        }
    }
}
